<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>JaDe Tokenizer: HauptFenster.cs Quellcode</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  <td id="projectlogo"><img alt="Logo" src="JaDe.jpg"/></td>
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">JaDe Tokenizer
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Erzeugt von Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Suchen');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Hauptseite</span></a></li>
      <li><a href="namespaces.html"><span>Pakete</span></a></li>
      <li><a href="annotated.html"><span>Klassen</span></a></li>
      <li class="current"><a href="files.html"><span>Dateien</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Suchen" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>Auflistung&#160;der&#160;Dateien</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('_haupt_fenster_8cs.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">HauptFenster.cs</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ﻿using System;
<a name="l00002"></a>00002 <span class="keyword">using</span> System.Collections;
<a name="l00003"></a>00003 <span class="keyword">using</span> System.Collections.Generic;
<a name="l00004"></a>00004 <span class="keyword">using</span> System.ComponentModel;
<a name="l00005"></a>00005 <span class="keyword">using</span> System.Data;
<a name="l00006"></a>00006 <span class="keyword">using</span> System.Drawing;
<a name="l00007"></a>00007 <span class="keyword">using</span> System.Linq;
<a name="l00008"></a>00008 <span class="keyword">using</span> System.Text;
<a name="l00009"></a>00009 <span class="keyword">using</span> System.Windows.Forms;
<a name="l00010"></a>00010 <span class="keyword">using</span> System.IO;
<a name="l00011"></a>00011 <span class="keyword">using</span> System.Diagnostics;
<a name="l00012"></a>00012 <span class="keyword">using</span> Microsoft.Win32;
<a name="l00013"></a>00013 
<a name="l00014"></a>00014 <span class="keyword">namespace </span>JADE
<a name="l00015"></a>00015 {<span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">    /// &lt;summary&gt;</span>
<a name="l00017"></a>00017 <span class="comment">    ///Form-Objekt(Windows Fenster) für das Hauptfenster unserer Anwendung.</span>
<a name="l00018"></a>00018 <span class="comment">    /// &lt;/summary&gt;</span>
<a name="l00019"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html">00019</a> <span class="comment"></span>    <span class="keyword">public</span> <span class="keyword">partial class </span><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html" title="Form-Objekt(Windows Fenster) für das Hauptfenster unserer Anwendung.">HauptFenster</a> : Form
<a name="l00020"></a>00020     {<span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">        /**Statische Variable vom Typ Daten. Erhält die Daten der TinySegmenter Funktion. */</span>
<a name="l00022"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a558b7846d22c7331fed55220febd965a">00022</a>         <span class="keyword">public</span> <span class="keyword">static</span> <a class="code" href="class_j_a_d_e_1_1_daten.html" title="Eine Klasse, die für das Speichern der Arraylist mit unseren Daten für den eingegebenen Text (die ein...">Daten</a> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a558b7846d22c7331fed55220febd965a">Instanzdaten</a>;<span class="comment"></span>
<a name="l00023"></a>00023 <span class="comment">        /**Statische Variable vom Typ SearchEngine. Wird im HauptFenster für den Aufruf der Suchfunktion benötigt. */</span>
<a name="l00024"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#ab2fc69df29d29eca01daa70413e5f9e1">00024</a>         <span class="keyword">private</span> <span class="keyword">static</span> <a class="code" href="class_j_a_d_e_1_1_search_engine.html" title="Die Klasse SearchEngine enthält die Funktionen zum Suchen eines Tokens im Wörterbuch. Mit Hilfe von Linq to XML wird wadoku.xml durchsucht, um für ein gesuchtes Token entsprechende Einträge zu finden. Dabei gibt es die Möglichkeit, nach genau übereinstimmenden Einträgen zu suchen oder aber nach allen Einträgen, die wie das Token beginnen. So können eventuelle falsche Zerlegungen des TinySegmenters mit Hilfe von Wadoku und der Bearbeiten-Funktion verbessert werden.">SearchEngine</a> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#ab2fc69df29d29eca01daa70413e5f9e1">suche</a>;<span class="comment"></span>
<a name="l00025"></a>00025 <span class="comment">        /**Statische Variable vom Typ Segmenter. Wird im HauptFenster für den Aufruf der TinySegmenter-Funktion benötigt. */</span>
<a name="l00026"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a64aa182f3b72b8e6cb392840c0c727e6">00026</a>         <span class="keyword">private</span> <span class="keyword">static</span> <a class="code" href="class_j_a_d_e_1_1_segmenter.html" title="Segmenter-Klasse enthält die Funktionen zum Tokenisieren des Eingabe Textes.">Segmenter</a> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a64aa182f3b72b8e6cb392840c0c727e6">segtest</a>;
<a name="l00027"></a>00027 <span class="comment"></span>
<a name="l00028"></a>00028 <span class="comment">        /**</span>
<a name="l00029"></a>00029 <span class="comment">         * Konstruktor für das HauptFenster.</span>
<a name="l00030"></a>00030 <span class="comment">         * Initialisiert die nötigen Komponenten.</span>
<a name="l00031"></a>00031 <span class="comment">         */</span>     
<a name="l00032"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#af6c75dfcebb1b939f1382101201bb29c">00032</a>         <span class="keyword">public</span> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#af6c75dfcebb1b939f1382101201bb29c">HauptFenster</a>()
<a name="l00033"></a>00033         {
<a name="l00034"></a>00034             InitializeComponent();
<a name="l00035"></a>00035             this.Icon = <span class="keyword">new</span> System.Drawing.Icon(<span class="stringliteral">&quot;jade.ico&quot;</span>);
<a name="l00036"></a>00036 
<a name="l00037"></a>00037             flowLayoutPanel_Token.HorizontalScroll.Enabled = <span class="keyword">false</span>;
<a name="l00038"></a>00038             flowLayoutPanel_Token.HorizontalScroll.Visible = <span class="keyword">false</span>;
<a name="l00039"></a>00039             <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a558b7846d22c7331fed55220febd965a">Instanzdaten</a> = <span class="keyword">new</span> <a class="code" href="class_j_a_d_e_1_1_daten.html" title="Eine Klasse, die für das Speichern der Arraylist mit unseren Daten für den eingegebenen Text (die ein...">Daten</a>();
<a name="l00040"></a>00040             <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#ab2fc69df29d29eca01daa70413e5f9e1">suche</a> = <a class="code" href="class_j_a_d_e_1_1_search_engine.html" title="Die Klasse SearchEngine enthält die Funktionen zum Suchen eines Tokens im Wörterbuch. Mit Hilfe von Linq to XML wird wadoku.xml durchsucht, um für ein gesuchtes Token entsprechende Einträge zu finden. Dabei gibt es die Möglichkeit, nach genau übereinstimmenden Einträgen zu suchen oder aber nach allen Einträgen, die wie das Token beginnen. So können eventuelle falsche Zerlegungen des TinySegmenters mit Hilfe von Wadoku und der Bearbeiten-Funktion verbessert werden.">SearchEngine</a>.<a class="code" href="class_j_a_d_e_1_1_search_engine.html#aadb00d679378ffa10abfd5b55c507581">Engine</a>;
<a name="l00041"></a>00041             <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a64aa182f3b72b8e6cb392840c0c727e6">segtest</a> = <span class="keyword">new</span> <a class="code" href="class_j_a_d_e_1_1_segmenter.html" title="Segmenter-Klasse enthält die Funktionen zum Tokenisieren des Eingabe Textes.">Segmenter</a>();
<a name="l00042"></a>00042         }
<a name="l00043"></a>00043 <span class="comment"></span>
<a name="l00044"></a>00044 <span class="comment">        /**</span>
<a name="l00045"></a>00045 <span class="comment">        * Diese Funktion passt bei einem Klick auf eine Zelle in der Tabelle für die Suchergebnisse die Größe der Tabellenspalten an die Inhalte der angezeigten Zeilen an.</span>
<a name="l00046"></a>00046 <span class="comment">        */</span>
<a name="l00047"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a14368960602be803a61cd235f36c7a5c">00047</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a14368960602be803a61cd235f36c7a5c">event_dataGridView_Click</a>(<span class="keywordtype">object</span> sender, DataGridViewCellEventArgs e)
<a name="l00048"></a>00048         {
<a name="l00049"></a>00049             this.dataGridView_Suchergebnisse.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);   <span class="comment">//Automatische Spaltenskalierung.</span>
<a name="l00050"></a>00050         }
<a name="l00051"></a>00051 <span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment">        /**</span>
<a name="l00053"></a>00053 <span class="comment">        * Diese Funktion sorgt dafür, dass nach dem Klicken auf einen Satz das FlowLayoutPanel aktualisiert wird und damit die richtigen Token angezeigt werden.</span>
<a name="l00054"></a>00054 <span class="comment">        */</span>
<a name="l00055"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a3bc25ba8df353d6bb7438fb863a931fe">00055</a>         <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a3bc25ba8df353d6bb7438fb863a931fe">event_TreeViewItemSelect</a>(<span class="keywordtype">object</span> sender, TreeViewEventArgs e)
<a name="l00056"></a>00056         {
<a name="l00057"></a>00057             <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a030c7e763308f15bca00dc58b4f9c7ca">flowupdate</a>();                                                                           <span class="comment">//Ruft Funktion flowupdate auf.</span>
<a name="l00058"></a>00058         }
<a name="l00059"></a>00059 <span class="comment"></span>
<a name="l00060"></a>00060 <span class="comment">         /**</span>
<a name="l00061"></a>00061 <span class="comment">         * Diese Funktion dient der Aktualisierung der Bereiche, in dem die Token eines Satzes angezeigt bzw. über Checkboxen ausgewählt werden können.</span>
<a name="l00062"></a>00062 <span class="comment">         * Die Anzeige geschieht immer für den in der Treeview gerade ausgewählten Satz des eingegebenen Textes.</span>
<a name="l00063"></a>00063 <span class="comment">         */</span>
<a name="l00064"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a030c7e763308f15bca00dc58b4f9c7ca">00064</a>         <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a030c7e763308f15bca00dc58b4f9c7ca">flowupdate</a>()
<a name="l00065"></a>00065         {   
<a name="l00066"></a>00066             TreeNode selectedTreeNode = treeView_Sätze.SelectedNode;                                <span class="comment">//Erstellt TreeNodeobjekt.</span>
<a name="l00067"></a>00067             <span class="keywordtype">int</span> satzIndex = this.treeView_Sätze.SelectedNode.Index;                                 <span class="comment">//Gibt Verweis auf aktuellen TreeNodeobjekt.</span>
<a name="l00068"></a>00068             
<a name="l00069"></a>00069             <span class="keywordflow">if</span> (selectedTreeNode != null)                                                           <span class="comment">//Wenn Treeview Saetze enhaelt, werden diese Eintraege hier geloescht.</span>
<a name="l00070"></a>00070             {
<a name="l00071"></a>00071                 this.flowLayoutPanel_Token.Controls.Clear();                                        <span class="comment">//Loescht alle Checkboxen aus dem Flowlayoutpannel.</span>
<a name="l00072"></a>00072                 <span class="keywordtype">string</span> satzText = <span class="stringliteral">&quot;&quot;</span>;                                                               <span class="comment">//Erstellt leeren String.</span>
<a name="l00073"></a>00073                 List&lt;Control&gt; checkBoxes = <span class="keyword">new</span> List&lt;Control&gt;();                                     <span class="comment">//Erstellt ein Control fuer Checkboxes.</span>
<a name="l00074"></a>00074                 ArrayList satz = <a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a558b7846d22c7331fed55220febd965a">Instanzdaten</a>.<a class="code" href="class_j_a_d_e_1_1_daten.html#a77c31ff4fd4520fa53512309f2c91c2f">getSatz</a>(satzIndex);                                   <span class="comment">//Erstellt eine Arraylist und erhaelt den Satz der markiert wurde.</span>
<a name="l00075"></a>00075                 <span class="keywordtype">int</span> i = 0;                                                                          <span class="comment">//Erstellt Hilfsvariable.</span>
<a name="l00076"></a>00076                 <span class="keywordtype">string</span> token = <span class="stringliteral">&quot;&quot;</span>;                                                                  <span class="comment">//Erstellt Hilfsvariable.</span>
<a name="l00077"></a>00077                     
<a name="l00078"></a>00078                 <span class="keywordflow">foreach</span> (var tokenObj <span class="keywordflow">in</span> satz)                                                      <span class="comment">//Jedes Token im Satz wird mit Leerzeichen an string angehangen.</span>
<a name="l00079"></a>00079                 {
<a name="l00080"></a>00080                     token = (String)tokenObj;
<a name="l00081"></a>00081                     satzText += token + <span class="stringliteral">&quot;  &quot;</span>;
<a name="l00082"></a>00082                     
<a name="l00083"></a>00083                     <span class="keywordflow">if</span> (!(<span class="stringliteral">&quot;、？！。&quot;</span>.Contains(token)))                                              <span class="comment">//Falls &quot;?&quot;, &quot;,&quot;, &quot;!&quot; oder &quot;.&quot; enhalten wird keine Checkbox fuer dieser erstellt.</span>
<a name="l00084"></a>00084                     {
<a name="l00085"></a>00085                         checkBoxes.Add
<a name="l00086"></a>00086                             (<span class="keyword">new</span> System.Windows.Forms.CheckBox                                      <span class="comment">//Fuer Jedes Token wird neue Checkbox erstellt.</span>
<a name="l00087"></a>00087                             { 
<a name="l00088"></a>00088                                 Name = <span class="stringliteral">&quot;&quot;</span> + i,
<a name="l00089"></a>00089                                 Text = token,
<a name="l00090"></a>00090                                 AutoSize = <span class="keyword">true</span>                                                     <span class="comment">//Autosize ist an.</span>
<a name="l00091"></a>00091                             });
<a name="l00092"></a>00092                     }
<a name="l00093"></a>00093                     i++;
<a name="l00094"></a>00094                 }
<a name="l00095"></a>00095 
<a name="l00096"></a>00096                 this.textBox1.Text = satzText;                                                      <span class="comment">//Uebergibt der Textbox den String mit dem Token.</span>
<a name="l00097"></a>00097                 this.flowLayoutPanel_Token.Controls.AddRange(checkBoxes.ToArray());                 <span class="comment">//Uebergibt die Checkboxen an ein Array und dann and das FlowLayoutPanel.</span>
<a name="l00098"></a>00098             }
<a name="l00099"></a>00099         }
<a name="l00100"></a>00100 <span class="comment"></span>
<a name="l00101"></a>00101 <span class="comment">        /**</span>
<a name="l00102"></a>00102 <span class="comment">         * Beim Klick auf den Tokenize-Button wird der Text aus der Richtextbox tokenisiert und in einer Instanz unserer Daten-Klasse (Variable Instanzdaten) festgehalten.</span>
<a name="l00103"></a>00103 <span class="comment">         * Zunächst wird der Text aus der Richtextbox von störenden Whitespace-Chars bereinigt.</span>
<a name="l00104"></a>00104 <span class="comment">         * Danach wird geprüft, ob sich nicht-japanische Zeichen im Text befinden und gegebenenfalls eine Warnmeldung ausgegeben.</span>
<a name="l00105"></a>00105 <span class="comment">         * Sofern ein Text vorhanden ist, wird dieser mit der TinySegmenter-Funktion tokenisiert.</span>
<a name="l00106"></a>00106 <span class="comment">         * Danach werden die Daten ausgelesen und die vorhandenen Sätze in der Treeview repräsentiert.</span>
<a name="l00107"></a>00107 <span class="comment">         */</span>
<a name="l00108"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a0a961abed468875e10e92a0a28f6d2d8">00108</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> Tokenize_Click(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00109"></a>00109         {
<a name="l00110"></a>00110             String toTok = this.richTextBox1.Text;                                                  <span class="comment">//Fuegt Text aus Richtextbox in ein String.</span>
<a name="l00111"></a>00111             toTok = toTok.Replace(<span class="stringliteral">&quot;\n&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);                                                        <span class="comment">//Loescht alle Zeilvorschübe.</span>
<a name="l00112"></a>00112             toTok = toTok.Replace(<span class="stringliteral">&quot;\t&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);                                                        <span class="comment">//Loescht alle Whitespacecharakter.</span>
<a name="l00113"></a>00113             toTok = toTok.Replace(<span class="stringliteral">&quot; &quot;</span>, <span class="stringliteral">&quot;&quot;</span>);                                                         <span class="comment">//Loescht Leerzeichen.</span>
<a name="l00114"></a>00114             toTok = toTok.Replace(<span class="stringliteral">&quot;　&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);                                                        <span class="comment">//Loescht japanische Leerzeichen.</span>
<a name="l00115"></a>00115             this.richTextBox1.Text = toTok;                                                         <span class="comment">//Fuegt Text von Richtextbox erneunt an String an.</span>
<a name="l00116"></a>00116             segtest.TextTest(this.richTextBox1.Text);
<a name="l00117"></a>00117             
<a name="l00118"></a>00118             <span class="keywordflow">if</span> (!(Equals(richTextBox1.Text, <span class="stringliteral">&quot;&quot;</span>)))                                                   <span class="comment">//Wenn die Textbox nicht leer ist, läuft Programm weiter.</span>
<a name="l00119"></a>00119             {
<a name="l00120"></a>00120                 suche.clearDataSet();
<a name="l00121"></a>00121                 dataGridView_Suchergebnisse.DataSource = null;
<a name="l00122"></a>00122                 this.treeView_Sätze.Nodes.Clear();
<a name="l00123"></a>00123                 this.textBox1.Text = <span class="stringliteral">&quot;&quot;</span>;
<a name="l00124"></a>00124                 this.flowLayoutPanel_Token.Controls.Clear();
<a name="l00125"></a>00125 
<a name="l00126"></a>00126                 Instanzdaten = segtest.TinySegmenter(toTok);                                        <span class="comment">//Weißt dem Objekt die Daten aus der richTextBox zu</span>
<a name="l00127"></a>00127                 ArrayList Alist = Instanzdaten.Zugriff;                                             <span class="comment">//Erstellt eine Arraylist.</span>
<a name="l00128"></a>00128 
<a name="l00129"></a>00129                 <span class="keywordtype">int</span> i = 0;
<a name="l00130"></a>00130                 <span class="keywordflow">foreach</span> (ArrayList a <span class="keywordflow">in</span> Alist)                                                      <span class="comment">//Für Jeden Eintrag im Array wird ein neuer Eintrag im Treeview erstellt.</span>
<a name="l00131"></a>00131                 {
<a name="l00132"></a>00132                     TreeNode Instanz = <span class="keyword">new</span> TreeNode(<span class="stringliteral">&quot;Satz &quot;</span> +  (<span class="stringliteral">&quot;&quot;</span> + (i + 1)).PadLeft(2,<span class="charliteral">&#39;0&#39;</span>) + <span class="stringliteral">&quot;: &quot;</span> + Instanzdaten.getToken(i, 0));
<a name="l00133"></a>00133                     treeView_Sätze.Nodes.Add(Instanz);
<a name="l00134"></a>00134                     i++;
<a name="l00135"></a>00135                 }
<a name="l00136"></a>00136             }
<a name="l00137"></a>00137             <span class="keywordflow">else</span>                                                                                    <span class="comment">//Falls Textbox leer ist, wird eine Fehlermeldung ausgegeben.</span>
<a name="l00138"></a>00138             {
<a name="l00139"></a>00139                 MessageBox.Show(<span class="stringliteral">&quot;Kein Text zum Tokenisieren gegeben&quot;</span>, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning);
<a name="l00140"></a>00140             }
<a name="l00141"></a>00141 
<a name="l00142"></a>00142         }
<a name="l00143"></a>00143 <span class="comment"></span>
<a name="l00144"></a>00144 <span class="comment">        /**</span>
<a name="l00145"></a>00145 <span class="comment">         * Diese Funktion setzt das Trennen eines Tokens um und ruft dazu das BeabeitenFenster auf.</span>
<a name="l00146"></a>00146 <span class="comment">         * @param[in] Satznummer int-Wert (Indexwert für Zugriff auf entsprechende Arraylists in Instanzdaten) des Satzes, in dem sich das zu ändernde Token befindet.</span>
<a name="l00147"></a>00147 <span class="comment">         * @param[in] Tok int-Wert (Indexwert für Zugriff auf entsprechende Arraylists in Instanzdaten) des Tokens, das aufgeteilt werden soll.</span>
<a name="l00148"></a>00148 <span class="comment">         */</span>
<a name="l00149"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a369ca3750c23c917e33ba51d307c7f97">00149</a>         <span class="keyword">public</span> <span class="keywordtype">void</span> trennen(<span class="keywordtype">int</span> Satznummer, <span class="keywordtype">int</span> Tok)
<a name="l00150"></a>00150         {
<a name="l00151"></a>00151             String str = Instanzdaten.getToken(Satznummer, Tok);
<a name="l00152"></a>00152             <a class="code" href="class_j_a_d_e_1_1_bearbeiten_fenster.html" title="Form-Objekt(Windows Fenster), in dem das Trennen eines Token in zwei neue Token realisiert wird...">BearbeitenFenster</a> neumit = <span class="keyword">new</span> <a class="code" href="class_j_a_d_e_1_1_bearbeiten_fenster.html" title="Form-Objekt(Windows Fenster), in dem das Trennen eines Token in zwei neue Token realisiert wird...">BearbeitenFenster</a>(Instanzdaten, Satznummer, Tok, str);           <span class="comment">//Erzeugt Bearbeiten-Fenster.</span>
<a name="l00153"></a>00153             neumit.FormClosing += <span class="keyword">new</span> FormClosingEventHandler(event_BearbeitenFensterSchliessen);           <span class="comment">//Erzeugt für das neue Fenster einen Fenster schließen Eventhandler.</span>
<a name="l00154"></a>00154             neumit.Show();                                                                                  <span class="comment">//Zeigt das Bearbeiten-Fenster.</span>
<a name="l00155"></a>00155         }
<a name="l00156"></a>00156 <span class="comment"></span>
<a name="l00157"></a>00157 <span class="comment">        /**</span>
<a name="l00158"></a>00158 <span class="comment">         * Diese Funktion schaltet beim Schließen des Bearbeiten-Fensters den Listener aus und das FlowlayoutPanel mit der Anzeige der Tokenliste wird geupdatet.</span>
<a name="l00159"></a>00159 <span class="comment">         */</span>
<a name="l00160"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a3218624ec64c861274fadfed97d909b7">00160</a>         <span class="keywordtype">void</span> event_BearbeitenFensterSchliessen(<span class="keywordtype">object</span> sender, FormClosingEventArgs e)
<a name="l00161"></a>00161         {
<a name="l00162"></a>00162             <a class="code" href="class_j_a_d_e_1_1_bearbeiten_fenster.html" title="Form-Objekt(Windows Fenster), in dem das Trennen eines Token in zwei neue Token realisiert wird...">BearbeitenFenster</a> neumit = (<a class="code" href="class_j_a_d_e_1_1_bearbeiten_fenster.html" title="Form-Objekt(Windows Fenster), in dem das Trennen eines Token in zwei neue Token realisiert wird...">BearbeitenFenster</a>)sender;
<a name="l00163"></a>00163             neumit.FormClosing -= <span class="keyword">new</span> FormClosingEventHandler(event_BearbeitenFensterSchliessen);
<a name="l00164"></a>00164             flowupdate();
<a name="l00165"></a>00165         }
<a name="l00166"></a>00166 <span class="comment"></span>
<a name="l00167"></a>00167 <span class="comment">        /**</span>
<a name="l00168"></a>00168 <span class="comment">         * Diese Funktion realisiert das Zusammenfügen zweier nebeneinanderliegender, ausgewählter Token.</span>
<a name="l00169"></a>00169 <span class="comment">         * Sie ist noch ausgelegt auf kleine Textgrössen und muss noch angepasst werden, um das Auslesen aller Daten für ein Zusammenfügen von Token zu verhindern.</span>
<a name="l00170"></a>00170 <span class="comment">         * Außerdem werden noch zwei int-Werte (Indexwerte für Zugriff auf entsprechende Arraylists in Instanzdaten) übergeben welche den Zugriff auf den entsprechenden Satz und die betroffenen Token möglich machen.</span>
<a name="l00171"></a>00171 <span class="comment">         * @param[in] Satznummer int-Wert (Indexwert für Zugriff auf entsprechende Arraylists in Instanzdaten) des Satzes in dem sich der zu ändernde Token befindet.</span>
<a name="l00172"></a>00172 <span class="comment">         * @param[in] Tok1 int-Wert (Indexwert) des ersten Tokens, das mit seinem Nachfolger-Token zusammengefügt werden soll.</span>
<a name="l00173"></a>00173 <span class="comment">         */</span>
<a name="l00174"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a038274865c5d073c5d5c99b387efc6f4">00174</a>         <span class="keyword">public</span> <span class="keywordtype">void</span> zusammen(<span class="keywordtype">int</span> Satznummer, <span class="keywordtype">int</span> Tok1)
<a name="l00175"></a>00175         {
<a name="l00176"></a>00176             ArrayList Alist = Instanzdaten.Zugriff;                                                         <span class="comment">//Zugriff auf Datenstruktur.</span>
<a name="l00177"></a>00177             ArrayList Satz = Instanzdaten.getSatz(Satznummer);                                              <span class="comment">//Heraussuchen des Satzes in welchem sich das zu ändernde Token befindet.   </span>
<a name="l00178"></a>00178             Satz[Tok1] = ((String)Satz[Tok1] + (String)Satz[Tok1+1]);                                         <span class="comment">//Zusammenfügen der Token tok1 und tok2 an Position von tok1.</span>
<a name="l00179"></a>00179             Satz.RemoveAt(Tok1+1);                                                                            <span class="comment">//Loeschen des nun ueberflüssigen tok2.</span>
<a name="l00180"></a>00180             Alist[Satznummer] = Satz;                                                                       <span class="comment">//Schreiben des geänderten Satzes in die Arraylist.</span>
<a name="l00181"></a>00181             Instanzdaten.Zugriff = Alist;                                                                   <span class="comment">//Schreiben der geänderten ARRAYLIST zurück in die Datenstruktur.</span>
<a name="l00182"></a>00182 
<a name="l00183"></a>00183             <span class="comment">//Aktualisieren des dataSet der SearchEngine</span>
<a name="l00184"></a>00184             <a class="code" href="class_j_a_d_e_1_1_search_engine.html" title="Die Klasse SearchEngine enthält die Funktionen zum Suchen eines Tokens im Wörterbuch. Mit Hilfe von Linq to XML wird wadoku.xml durchsucht, um für ein gesuchtes Token entsprechende Einträge zu finden. Dabei gibt es die Möglichkeit, nach genau übereinstimmenden Einträgen zu suchen oder aber nach allen Einträgen, die wie das Token beginnen. So können eventuelle falsche Zerlegungen des TinySegmenters mit Hilfe von Wadoku und der Bearbeiten-Funktion verbessert werden.">SearchEngine</a>.<a class="code" href="class_j_a_d_e_1_1_search_engine.html#afd36b5e9cd5a78e215e11a5083cdb015">DisposeTable</a>(Satznummer, Tok1);
<a name="l00185"></a>00185             <a class="code" href="class_j_a_d_e_1_1_search_engine.html" title="Die Klasse SearchEngine enthält die Funktionen zum Suchen eines Tokens im Wörterbuch. Mit Hilfe von Linq to XML wird wadoku.xml durchsucht, um für ein gesuchtes Token entsprechende Einträge zu finden. Dabei gibt es die Möglichkeit, nach genau übereinstimmenden Einträgen zu suchen oder aber nach allen Einträgen, die wie das Token beginnen. So können eventuelle falsche Zerlegungen des TinySegmenters mit Hilfe von Wadoku und der Bearbeiten-Funktion verbessert werden.">SearchEngine</a>.<a class="code" href="class_j_a_d_e_1_1_search_engine.html#afd36b5e9cd5a78e215e11a5083cdb015">DisposeTable</a>(Satznummer, Tok1+1);
<a name="l00186"></a>00186 
<a name="l00187"></a>00187             <span class="comment">//Nach der Stelle, an der eine Bearbeitung vorgenommen wurde, müssen die Indizes in den Namen von eventuell vorhandenen Tabellen mit Sucheinträgen erhöht werden.</span>
<a name="l00188"></a>00188             <span class="comment">//Dafür werden alle Indizes im Satz zwei Stellen nach der Stelle des Zusammenfügens mit ShiftTable auf Tabellen überprüft und ggf. abgeändert werden.  </span>
<a name="l00189"></a>00189             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = Tok1 + 2; i &lt; Satz.Count; i++)
<a name="l00190"></a>00190             {
<a name="l00191"></a>00191                 <a class="code" href="class_j_a_d_e_1_1_search_engine.html" title="Die Klasse SearchEngine enthält die Funktionen zum Suchen eines Tokens im Wörterbuch. Mit Hilfe von Linq to XML wird wadoku.xml durchsucht, um für ein gesuchtes Token entsprechende Einträge zu finden. Dabei gibt es die Möglichkeit, nach genau übereinstimmenden Einträgen zu suchen oder aber nach allen Einträgen, die wie das Token beginnen. So können eventuelle falsche Zerlegungen des TinySegmenters mit Hilfe von Wadoku und der Bearbeiten-Funktion verbessert werden.">SearchEngine</a>.<a class="code" href="class_j_a_d_e_1_1_search_engine.html#a41708a7451c96c92fa1dcab5dad831a7">ShiftTable</a>(Satznummer, i, <span class="keyword">true</span>);
<a name="l00192"></a>00192             }
<a name="l00193"></a>00193         }
<a name="l00194"></a>00194 <span class="comment"></span>
<a name="l00195"></a>00195 <span class="comment">        /**</span>
<a name="l00196"></a>00196 <span class="comment">         * Hierbei handelt es sich um eine Funktion welche beim Klick auf den Öffnen-Dialog im Menü aufgerufen wird.</span>
<a name="l00197"></a>00197 <span class="comment">         * Ein FileOpenDialog, der das Auswählen einer Textdatei ermöglicht, welche dann gelesen und in die RichTextBox des Hauptfensters geladen wird.</span>
<a name="l00198"></a>00198 <span class="comment">         */</span> 
<a name="l00199"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#aad6045152a4aa69dbc48c27edafd74cd">00199</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> öffnenToolStripMenu_Click(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00200"></a>00200         {
<a name="l00201"></a>00201             OpenFileDialog openFileDialog1 = <span class="keyword">new</span> OpenFileDialog();
<a name="l00202"></a>00202 
<a name="l00203"></a>00203             openFileDialog1.Filter = <span class="stringliteral">&quot;txt files (*.txt)|*.txt|All files (*.*)|*.*&quot;</span>;
<a name="l00204"></a>00204             openFileDialog1.FilterIndex = 1;
<a name="l00205"></a>00205 
<a name="l00206"></a>00206             openFileDialog1.RestoreDirectory = <span class="keyword">true</span>;
<a name="l00207"></a>00207 
<a name="l00208"></a>00208             StreamReader openFileStream;
<a name="l00209"></a>00209 
<a name="l00210"></a>00210             <span class="keywordflow">if</span> (openFileDialog1.ShowDialog() == DialogResult.OK)
<a name="l00211"></a>00211             {
<a name="l00212"></a>00212                 <span class="keywordflow">try</span>
<a name="l00213"></a>00213                 {
<a name="l00214"></a>00214                     <span class="keywordflow">if</span> ((openFileStream = <span class="keyword">new</span>  StreamReader(openFileDialog1.FileName)) != null)
<a name="l00215"></a>00215                     {
<a name="l00216"></a>00216                         <span class="keyword">using</span> (openFileStream)
<a name="l00217"></a>00217                         {
<a name="l00218"></a>00218                             richTextBox1.Text = openFileStream.ReadToEnd();
<a name="l00219"></a>00219                         }
<a name="l00220"></a>00220                     }
<a name="l00221"></a>00221                 }
<a name="l00222"></a>00222                 <span class="keywordflow">catch</span> (Exception exception)
<a name="l00223"></a>00223                 {
<a name="l00224"></a>00224                     MessageBox.Show(<span class="stringliteral">&quot;Es ist ein Fehler beim Öffnen der angegebenen Datei aufgetreten.\n\nFehlermeldung:\n&quot;</span> + exception.Message, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning); 
<a name="l00225"></a>00225                 }
<a name="l00226"></a>00226             }
<a name="l00227"></a>00227 
<a name="l00228"></a>00228         }
<a name="l00229"></a>00229 <span class="comment"></span>
<a name="l00230"></a>00230 <span class="comment">        /**Diese Funktion wird durch einen Klick auf den &quot;Token bearbeiten&quot;-Button ausgelöst.</span>
<a name="l00231"></a>00231 <span class="comment">         * Sie überprüft zuerst ob eine korrekte Auswahl con Token (makierte checkBoxen in der FlowLayoutPanel) vorliegt. Bei einer fehlerhafter Auswahl erfolgt eine Warnmeldung.</span>
<a name="l00232"></a>00232 <span class="comment">         * Sofern korrekte Auswahl vorliegt, wird unterschieden zwischen: </span>
<a name="l00233"></a>00233 <span class="comment">         * - 1 Token makiert --&gt; &quot;Token trennen&quot;-Funktion wird auf dem ausgewählten Token ausgeführt.</span>
<a name="l00234"></a>00234 <span class="comment">         * - 2 Token makiert --&gt; &quot;Token zusammen&quot;-Funktion wird auf den ausgewählten Token ausgeführt.</span>
<a name="l00235"></a>00235 <span class="comment">         */</span>
<a name="l00236"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a1fa64be155b6ed7cf444165a6239e30a">00236</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> TokenBearbeiten_Click(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00237"></a>00237         {
<a name="l00238"></a>00238             <span class="keywordtype">int</span> count = 0;                                                          <span class="comment">//Variable &quot;count&quot; wird eingeführt.</span>
<a name="l00239"></a>00239             <span class="keywordtype">int</span> first = 0;                                                          <span class="comment">//Variable &quot;first&quot; wird eingeführt.</span>
<a name="l00240"></a>00240             <span class="keywordtype">int</span> second = 0;                                                         <span class="comment">//Variable &quot;second&quot; wird eingeführt.</span>
<a name="l00241"></a>00241             <span class="keywordflow">foreach</span> (Control con <span class="keywordflow">in</span> this.flowLayoutPanel_Token.Controls)            <span class="comment">//Zaehlt wie viel Checkboxen ausgewählt wurden.</span>
<a name="l00242"></a>00242             {
<a name="l00243"></a>00243                 CheckBox box = (CheckBox)con;
<a name="l00244"></a>00244                 <span class="keywordtype">int</span> index = Int32.Parse(box.Name); 
<a name="l00245"></a>00245                 <span class="keywordflow">if</span> (box.Checked == <span class="keyword">true</span>)
<a name="l00246"></a>00246                 {
<a name="l00247"></a>00247                     <span class="keywordflow">if</span> (count == 0)
<a name="l00248"></a>00248                     {
<a name="l00249"></a>00249                         first = index;
<a name="l00250"></a>00250                     }
<a name="l00251"></a>00251                     <span class="keywordflow">if</span> (count &gt; 0)
<a name="l00252"></a>00252                     {
<a name="l00253"></a>00253                         second = index;
<a name="l00254"></a>00254                     }
<a name="l00255"></a>00255                     count++;
<a name="l00256"></a>00256                 }
<a name="l00257"></a>00257             }
<a name="l00258"></a>00258             <span class="keywordflow">if</span> (count &gt; 2)                                                          <span class="comment">//Fehlerausgabe wenn mehr als 2 Checkboxen ausgewaehlt wurden.</span>
<a name="l00259"></a>00259             {
<a name="l00260"></a>00260                 MessageBox.Show(<span class="stringliteral">&quot;Bitte Maximal 2 (nebeneinander liegende) Token auswählen.&quot;</span>, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning);
<a name="l00261"></a>00261             }
<a name="l00262"></a>00262             <span class="keywordflow">else</span>
<a name="l00263"></a>00263             {
<a name="l00264"></a>00264                 <span class="keywordflow">switch</span> (count)
<a name="l00265"></a>00265                 {
<a name="l00266"></a>00266                     <span class="keywordflow">case</span> 1:                                                         <span class="comment">//Trennt die ausgewaehlten Token.</span>
<a name="l00267"></a>00267                         trennen(this.treeView_Sätze.SelectedNode.Index, first);
<a name="l00268"></a>00268                         <span class="keywordflow">break</span>;
<a name="l00269"></a>00269                     <span class="keywordflow">case</span> 2:
<a name="l00270"></a>00270                         <span class="keywordflow">if</span> (first + 1 != second)                                    <span class="comment">//Fehlerausgabe wenn Checkboxen nicht nebeneinader liegen.</span>
<a name="l00271"></a>00271                         {
<a name="l00272"></a>00272                             MessageBox.Show(<span class="stringliteral">&quot;Bitte Maximal 2 (nebeneinander liegende) Token auswählen.&quot;</span>, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning);
<a name="l00273"></a>00273                             <span class="keywordflow">break</span>;
<a name="l00274"></a>00274                         }
<a name="l00275"></a>00275                         <span class="keywordflow">else</span>                                                        <span class="comment">//Fuegt Token zusammen.</span>
<a name="l00276"></a>00276                         {
<a name="l00277"></a>00277                             zusammen(this.treeView_Sätze.SelectedNode.Index, first);
<a name="l00278"></a>00278                             flowupdate();                                           <span class="comment">//Ruft flowupdate-Funktion auf.</span>
<a name="l00279"></a>00279                             <span class="keywordflow">break</span>;                                                  <span class="comment">//beendet diese Funktion.</span>
<a name="l00280"></a>00280                         }
<a name="l00281"></a>00281                 }
<a name="l00282"></a>00282             }
<a name="l00283"></a>00283         }
<a name="l00284"></a>00284 <span class="comment"></span>
<a name="l00285"></a>00285 <span class="comment">        /**Der Aufruf dieser Funktion geschieht beim Klick auf den &quot;Token suchen&quot;-Button.</span>
<a name="l00286"></a>00286 <span class="comment">         * Diese Funktion überprüft zuerst, ob eine korrekte Auswahl an Token (makierte Checkboxen im FlowLayoutPanel) vorliegt. Bei einer fehlerhafter Auswahl erfolgt Fehlerhinweis.</span>
<a name="l00287"></a>00287 <span class="comment">         * Sofern eine richtige Auswahl vorliegt, werden die vorliegenden Informationen (gewähltes Token, detailierte Suche ja/nein) an die Suchfunktion search übergeben, welche eine Ergebnissliste(DataTable) erstellt und diese im Gridview abbildet. </span>
<a name="l00288"></a>00288 <span class="comment">         */</span>
<a name="l00289"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#ab3538b4037365ee270e37a980825492a">00289</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> TokenSuchen_Click(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00290"></a>00290         {
<a name="l00291"></a>00291             <span class="keywordtype">int</span> count = 0;                                                                  <span class="comment">//Erzeugt die Variable &quot;Count&quot; mit dem Wert Null.</span>
<a name="l00292"></a>00292             <span class="keywordtype">int</span> first = 0;                                                                  <span class="comment">//Erzeugt die Variable &quot;first&quot; mit dem Wert Null.</span>
<a name="l00293"></a>00293             <span class="keywordflow">foreach</span> (Control con <span class="keywordflow">in</span> this.flowLayoutPanel_Token.Controls)                         
<a name="l00294"></a>00294             {
<a name="l00295"></a>00295                 CheckBox box = (CheckBox)con;
<a name="l00296"></a>00296                 <span class="keywordtype">int</span> index = Int32.Parse(box.Name);
<a name="l00297"></a>00297                 <span class="keywordflow">if</span> (box.Checked == <span class="keyword">true</span>)
<a name="l00298"></a>00298                 {
<a name="l00299"></a>00299                     <span class="keywordflow">if</span> (count == 0)
<a name="l00300"></a>00300                     {
<a name="l00301"></a>00301                         first = index;
<a name="l00302"></a>00302                     }
<a name="l00303"></a>00303                     count++;
<a name="l00304"></a>00304                 }
<a name="l00305"></a>00305             }
<a name="l00306"></a>00306             <span class="keywordflow">if</span> (count &gt; 1)                                                                  <span class="comment">//Eventhaendler, wenn mehr als eine Checkbox ausgewaehlt ist, wird eine Fehlermeldung ausgegeben.</span>
<a name="l00307"></a>00307             {
<a name="l00308"></a>00308                 MessageBox.Show(<span class="stringliteral">&quot;Bitte wählen Sie maximal ein Token aus.&quot;</span>, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning);
<a name="l00309"></a>00309             }
<a name="l00310"></a>00310             <span class="keywordflow">if</span> (count == 1)                                                                 <span class="comment">//Eventhaendler, wenn genau eine Checkbox ausgewaehlt ist.</span>
<a name="l00311"></a>00311             {
<a name="l00312"></a>00312                 DataTable result = suche.search(Instanzdaten.getToken(<span class="keyword">this</span>.treeView_Sätze.SelectedNode.Index, first), this.treeView_Sätze.SelectedNode.Index, first, this.detailSucheCheckBox.Checked);     <span class="comment">//Sucht nun ueber den Index, ob es im Woerterbuch passenden Eintraege gibt.</span>
<a name="l00313"></a>00313                 <span class="keywordflow">if</span> (result.Rows.Count &gt; 0)                                                  <span class="comment">//Wenn etwas gefunden wurde, wird es in Datagridview geschrieben.</span>
<a name="l00314"></a>00314                 {
<a name="l00315"></a>00315                     this.dataGridView_Suchergebnisse.DataSource = result;
<a name="l00316"></a>00316                 }
<a name="l00317"></a>00317                 <span class="keywordflow">else</span>                                                                        <span class="comment">//Wenn kein Eintrag gefunden wurde, wird dataGridView_Suchergebnisse geleert und eine Meldung ausgegeben.</span>
<a name="l00318"></a>00318                 {
<a name="l00319"></a>00319                     dataGridView_Suchergebnisse.DataSource = null;
<a name="l00320"></a>00320                     MessageBox.Show(<span class="stringliteral">&quot;Es wurden keine Einträge gefunden.&quot;</span>, <span class="stringliteral">&quot;Fehler bei der Eingabe&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning);
<a name="l00321"></a>00321                 }
<a name="l00322"></a>00322             }
<a name="l00323"></a>00323         }
<a name="l00324"></a>00324 <span class="comment"></span>
<a name="l00325"></a>00325 <span class="comment">        /**</span>
<a name="l00326"></a>00326 <span class="comment">         * Diese Funktion schließt nach dem Klicken auf den Beenden-Menüeintrag das Programm.</span>
<a name="l00327"></a>00327 <span class="comment">         */</span> 
<a name="l00328"></a><a class="code" href="class_j_a_d_e_1_1_haupt_fenster.html#a014719eeda15c47dbdb2c3cabeec9853">00328</a>         <span class="keyword">private</span> <span class="keywordtype">void</span> beendenToolStripMenuItem_Click_1(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00329"></a>00329         {
<a name="l00330"></a>00330             System.Windows.Forms.Application.Exit();
<a name="l00331"></a>00331         }
<a name="l00332"></a>00332 <span class="comment"></span>
<a name="l00333"></a>00333 <span class="comment">        /// @cond</span>
<a name="l00334"></a>00334 <span class="comment"></span>        <span class="keyword">private</span> <span class="keyword">static</span> <span class="keywordtype">string</span> GetDefaultBrowserPath()
<a name="l00335"></a>00335         {
<a name="l00336"></a>00336             <span class="keywordtype">string</span> key = <span class="stringliteral">@&quot;HTTP\shell\open\command&quot;</span>;
<a name="l00337"></a>00337             <span class="keyword">using</span> (RegistryKey registrykey = Registry.ClassesRoot.OpenSubKey(key, <span class="keyword">false</span>))
<a name="l00338"></a>00338             {
<a name="l00339"></a>00339                 <span class="keywordflow">return</span> ((<span class="keywordtype">string</span>)registrykey.GetValue(null, null)).Split(<span class="charliteral">&#39;&quot;&#39;</span>)[1];
<a name="l00340"></a>00340             }
<a name="l00341"></a>00341         }
<a name="l00342"></a>00342 
<a name="l00343"></a>00343         <span class="keyword">private</span> <span class="keywordtype">void</span> hilfeToolStripMenuItem_Click(<span class="keywordtype">object</span> sender, EventArgs e)
<a name="l00344"></a>00344         {
<a name="l00345"></a>00345             Process.Start(GetDefaultBrowserPath(), <span class="stringliteral">&quot;../../html/index.html&quot;</span>);
<a name="l00346"></a>00346         }
<a name="l00347"></a>00347 <span class="comment"></span>
<a name="l00348"></a>00348 <span class="comment">        /// @endcond</span>
<a name="l00349"></a>00349 <span class="comment"></span>    }
<a name="l00350"></a>00350 }
<a name="l00351"></a>00351 
<a name="l00352"></a>00352 
<a name="l00353"></a>00353 
<a name="l00354"></a>00354 
</pre></div></div><!-- contents -->
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>Alle</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Klassen</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namensbereiche</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Funktionen</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variablen</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Propertys</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><b>HauptFenster.cs</b>      </li>

    <li class="footer">Erzeugt am Fre Mär 2 2012 15:52:52 für JaDe Tokenizer von
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
